import numpy as np
import matplotlib.pyplot as plt
from collections import defaultdict
'''
# 打开文件并读取数据
with open("weatherdata.csv", "r", encoding='utf-8') as f:
    data = np.loadtxt(f, str, delimiter=',')

# 提取出天津市的数据
data_row = np.where(data[:, 3] == '天津')[0]
henjsoyzxmig_data = data[data_row]  # 提取天津市的数据

# 初始化一个空字典存储各地区的数据
city_data = defaultdict(list)

# 遍历数据并提取温度和湿度（假设温度在第5列，湿度在第6列）
for row in henjsoyzxmig_data:
    city = row[2]  # 地区名称
    temperature = float(row[4])  # 温度
    humidity = float(row[5].replace('%', ''))  # 去掉湿度中的百分号
    city_data[city].append((temperature, humidity))

# 计算每个地区的平均温度和湿度
average_temperature = {}
average_humidity = {}

for city, values in city_data.items():
    temperatures = [temp for temp, hum in values]
    humidities = [hum for temp, hum in values]
    average_temperature[city] = np.mean(temperatures)
    average_humidity[city] = np.mean(humidities)

# 输出每个地区的平均温度和湿度
print("每个地区的平均温度和湿度:")
for city in city_data.keys():
    print(f"{city}: 平均温度 {average_temperature[city]:.2f} °C, 平均湿度 {average_humidity[city]:.2f} %")

plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体字体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题
# 绘制每个地区的平均温度和湿度柱状图
cities = list(average_temperature.keys())
avg_temps = list(average_temperature.values())
avg_hums = list(average_humidity.values())

plt.figure(figsize=(10, 6))

# 创建并绘制温度柱状图
plt.bar(cities, avg_temps, alpha=0.6, label='平均温度 (°C)', color='blue', width=0.4)

# 在温度柱状图上叠加湿度柱状图
plt.bar(cities, avg_hums, alpha=0.6, label='平均湿度 (%)', color='orange', width=0.4, bottom=avg_temps)

plt.xticks(rotation=45)
plt.xlabel('城市')
plt.ylabel('平均值')
plt.title('天津市各地区的平均温度和湿度')
plt.legend()
plt.tight_layout()
plt.show()

# 计算每个地区的最高温度、最低温度以及最高湿度、最低湿度
max_temperature = {}
min_temperature = {}
max_humidity = {}
min_humidity = {}

for city, values in city_data.items():
    temperatures = [temp for temp, hum in values]
    humidities = [hum for temp, hum in values]
    max_temperature[city] = np.max(temperatures)
    min_temperature[city] = np.min(temperatures)
    max_humidity[city] = np.max(humidities)
    min_humidity[city] = np.min(humidities)

# 输出每个地区的最高和最低温度、湿度
print("\n每个地区的最高温度、最低温度和湿度:")
for city in city_data.keys():
    print(f"{city}: 最高温度 {max_temperature[city]:.2f} °C, 最低温度 {min_temperature[city]:.2f} °C, 最高湿度 {max_humidity[city]:.2f} %, 最低湿度 {min_humidity[city]:.2f} %")

# 绘制最高温度和湿度的散点图
plt.figure(figsize=(10, 6))
for city in cities:
    plt.scatter(max_temperature[city], max_humidity[city], label=city)

plt.xlabel('最高温度 (°C)')
plt.ylabel('最高湿度 (%)')
plt.title('天津市各地区的最高温度和最高湿度')
plt.legend(fontsize='small')  # 设置图例标签字体为小号
plt.tight_layout()
plt.show()

# 绘制最低温度和湿度的散点图
plt.figure(figsize=(10, 6))
for city in cities:
    plt.scatter(min_temperature[city], min_humidity[city], label=city)

plt.xlabel('最低温度 (°C)')
plt.ylabel('最低湿度 (%)')
plt.title('天津市各地区的最低温度和最低湿度')
plt.legend(fontsize='small')  # 设置图例标签字体为小号
plt.tight_layout()
plt.show()
'''